/**
 * 权限拦截器
 * 处理需要登录的页面访问
 */

// 需要登录的页面路径
const AUTH_PAGES = [
  'pages/ai/index',
  'pages/health/index', 
  'pages/profile/index'
];

// 登录页面路径
const LOGIN_PAGE = '/pages/login/index';

/**
 * 校验页面是否需要登录权限
 * @param {String} path 页面路径
 * @return {Boolean} 是否需要登录
 */
export function needAuth(path) {
  // 提取页面路径
  path = path.split('?')[0];
  // 去掉开头的斜杠
  if (path.startsWith('/')) {
    path = path.substr(1);
  }
  
  // 判断是否在需要登录的页面数组中
  return AUTH_PAGES.includes(path);
}

/**
 * 获取本地存储的token
 * @return {String|null} token值
 */
export function getToken() {
  return uni.getStorageSync('token') || null;
}

/**
 * 校验用户是否已登录
 * @return {Boolean} 是否已登录
 */
export function isLoggedIn() {
  return !!getToken();
}

/**
 * 页面跳转拦截器
 * @param {Object} options 跳转参数
 * @return {Boolean} 是否允许跳转
 */
export function routeInterceptor(options) {
  // 判断目标页面是否需要登录权限
  if (needAuth(options.url) && !isLoggedIn()) {
    // 用户未登录且访问需要登录的页面
    console.log('需要登录', options.url);
    
    // 将当前页面路径保存，登录成功后可以跳回
    const redirect = encodeURIComponent(options.url);
    
    // 跳转至登录页
    uni.navigateTo({
      url: `${LOGIN_PAGE}?redirect=${redirect}`
    });
    
    // 阻止原来的跳转
    return false;
  }
  
  // 允许跳转
  return true;
} 